﻿package frEngine.loaders.particleSub
{
    import __AS3__.vec.*;
    import flash.geom.*;
    import frEngine.animateControler.particleControler.*;

    public class UserEmitter extends EmitterObject
    {
        private var _data:Vector.<Number>;
        private var _dataLen:int;
        private var reg:RegExp;

        public function UserEmitter(param1:String, param2:String, param3:EmitUserObject)
        {
            var _loc_5:String = null;
            var _loc_6:int = 0;
            var _loc_7:Array = null;
            this.reg = /\(|\)""\(|\)/g;
            super(null, param2);
            param1 = param1.replace(/\s""\s/g, "");
            var _loc_4:* = param1.split(")(");
            this._dataLen = _loc_4.length;
            this._data = new Vector.<Number>;
            if (this._dataLen == 0)
            {
                this._data.push(0, 0, 0);
                this._dataLen = 1;
            }
            else
            {
                _loc_4[0] = String(_loc_4[0]).replace(this.reg, "");
                _loc_4[(this._dataLen - 1)] = String(_loc_4[(this._dataLen - 1)]).replace(this.reg, "");
                _loc_6 = 0;
                while (_loc_6 < this._dataLen)
                {
                    
                    _loc_7 = String(_loc_4[_loc_6]).split(",");
                    this._data.push(_loc_7[0], _loc_7[1], _loc_7[2]);
                    _loc_6++;
                }
            }
            if (param3 && param3.emitOnePos)
            {
                this.initEmitOnePos(param3);
            }
            return;
        }// end function

        public function initEmitOnePos(param1:EmitUserObject) : void
        {
            var _loc_5:int = 0;
            var _loc_6:int = 0;
            var _loc_7:int = 0;
            var _loc_8:int = 0;
            var _loc_9:int = 0;
            var _loc_10:Number = NaN;
            var _loc_11:Number = NaN;
            var _loc_12:Number = NaN;
            var _loc_13:Vector3D = null;
            var _loc_16:uint = 0;
            var _loc_2:* = param1.emitAtFrame;
            var _loc_3:* = param1.emitTotalNum;
            var _loc_4:* = new Vector.<Number>;
            if (_loc_3 > ParticleParams.maxConstRegistNum)
            {
                _loc_3 = ParticleParams.maxConstRegistNum;
            }
            var _loc_14:* = _loc_2[0];
            var _loc_15:* = _loc_3 - 1;
            _loc_5 = 0;
            while (_loc_5 < _loc_15)
            {
                
                _loc_16 = _loc_2[(_loc_5 + 1)];
                if (_loc_16 != _loc_14)
                {
                    _loc_6 = _loc_8;
                    while (_loc_6 <= _loc_5)
                    {
                        
                        _loc_13 = this.getTargetRondomXYZ(_loc_7);
                        _loc_10 = _loc_13.x;
                        _loc_11 = _loc_13.y;
                        _loc_12 = _loc_13.z;
                        _loc_4.push(_loc_10, _loc_11, _loc_12);
                        _loc_6++;
                    }
                    _loc_7++;
                    _loc_8 = _loc_5 + 1;
                }
                _loc_14 = _loc_16;
                _loc_5++;
            }
            _loc_15 = _loc_2.length;
            _loc_6 = _loc_8;
            while (_loc_6 < _loc_15)
            {
                
                _loc_13 = this.getTargetRondomXYZ(_loc_7);
                _loc_10 = _loc_13.x;
                _loc_11 = _loc_13.y;
                _loc_12 = _loc_13.z;
                _loc_4.push(_loc_10, _loc_11, _loc_12);
                _loc_6++;
            }
            this._data = _loc_4;
            this._dataLen = this._data.length;
            return;
        }// end function

        override public function getTargetRondomXYZ(param1:int) : Vector3D
        {
            var _loc_2:* = param1 % this._dataLen * 3;
            _vect3d.x = this._data[_loc_2++];
            _vect3d.y = this._data[_loc_2++];
            _vect3d.z = this._data[_loc_2++];
            if (_faceTransform != null)
            {
                return _faceTransform.transformVector(_vect3d);
            }
            return _vect3d;
        }// end function

    }
}
